
package com.jf.cloud.live.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.live.param.ReturnLiveParam;
import com.jf.cloud.live.dto.LiveUserDTO;
import com.jf.cloud.live.model.LiveUser;
import me.chanjar.weixin.common.error.WxErrorException;

/**
 * 直播成员
 *
 * @author zz
 * @date 2022-08-17 17:09:06
 */
public interface LiveUserService {

    /**
     * 分页获取直播成员列表
     * @param pageDTO 分页参数
     * @return 直播成员列表分页数据
     */
    PageVO<LiveUser> page(PageDTO pageDTO, LiveUserDTO liveUserDTO);

    /**
     * 根据直播成员id获取直播成员
     *
     * @param liveUserId 直播成员id
     * @return 直播成员
     */
    LiveUser getByLiveUserId(Long liveUserId);

    /**
     * 保存直播成员
     * @param liveUser 直播成员
     */
    void save(LiveUser liveUser);

    /**
     * 更新直播成员
     * @param liveUser 直播成员
     */
    void update(LiveUser liveUser);

    /**
     * 根据直播成员id删除直播成员
     * @param liveUserId 直播成员id
     */
    void deleteById(Long liveUserId);


    /**
     * 保存直播成员信息
     * @param liveUser 直播成员
     * @throws WxErrorException 微信异常
     * @return 结果
     */
    ReturnLiveParam saveInfo(LiveUser liveUser) throws WxErrorException;

    /**
     * 同步微信的直播间成员列表
     * @throws WxErrorException 微信返回异常
     */
    void synchronousWxLiveUsers() throws WxErrorException;

    /**
     * 删除直播成员信息
     * @param liveUserId 直播成员信息
     * @throws WxErrorException 微信返回异常
     * @return 结果
     */
    Boolean removeAndWeChatById(Long liveUserId) throws WxErrorException;
}
